﻿using System;
using Director.StockSharp.Transaq.Native.Responses;

namespace Director.StockSharp.Transaq.Native.Commands
{
	abstract class NewBaseOrderMessage : BaseCommandMessage
	{
		protected NewBaseOrderMessage(string commandId)
			: base(commandId)
		{
		}
		public int SecId { get; set; }
		public string Board { get; set; }
		public string SecCode { get; set; }
		public string Client { get; set; }
		public decimal Price { get; set; }
		public int Quantity { get; set; }
		public BuySells BuySell { get; set; }
		public string BrokerRef { get; set; }
	}

	internal class NewOrderMessage : NewBaseOrderMessage
	{
		public NewOrderMessage() : base(ApiCommands.NewOrder)
		{
		}

		public int Hidden { get; set; }
		public bool ByMarket { get; set; }
		//public bool UseCredit { get; set; }
		public bool NoSplit { get; set; }
		public DateTime? ExpDate { get; set; }
		public NewOrderUnfilleds Unfilled { get; set; }
	}

	internal enum NewOrderUnfilleds
	{
		/// <summary>
		/// неисполненная часть заявки помещается в очередь заявок Биржи
		/// </summary>
		PutInQueue,

		/// <summary>
		/// неисполненная часть заявки снимается с торгов НЕТ НА MMA
		/// </summary>
		CancelBalance,

		/// <summary>
		/// сделки совершаются только в том случае, если заявка может быть удовлетворена полностью. НЕТ НА MMA		/// </summary>
		ImmOrCancel
	}
}